The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
A computer network or data network is a set of computing components interconnected by communication links. Each computing component may be a separate computing device, such as, without limitation, a hub, switch, bridge, router, server, gateway, or personal computer, or a component thereof. Each computing component is considered to be a node within the network. A communication link is a mechanism of connecting at least two nodes such that each node may transmit data to and receive data from the other node. Such data may be transmitted in the form of signals over transmission media such as, without limitation, electrical cables, optical cables, or wireless media.
The structure and transmission of data between nodes is governed by a number of different protocols. There may be multiple layers of protocol, typically beginning with a lowest layer, such as a “physical” layer that governs the transmission and reception of raw bit streams as signals over a transmission medium. Each layer defines a data unit (the protocol data unit, or “PDU”), with multiple data units at one layer combining to form a single data unit in another. Additional examples of layers may include, for instance, a data link layer in which bits defined by a physical layer are combined to form a frame or cell, a network layer in which frames or cells defined by the data link layer are combined to form a packet, and a transport layer in which packets defined by the network layer are combined to form a TCP segment or UDP datagram. The Open Systems Interconnection model of communications describes these and other layers of communications. However, other models defining other ways of layering information may also be used. The Internet protocol suite, or “TCP/IP stack,” is one example of a common group of protocols that may be used together over multiple layers to communicate information. However, techniques described herein may have application to other protocols outside of the TCP/IP stack.
A given node in a network may not necessarily have a link to each other node in the network, particularly in more complex networks. For example, in wired networks, each node may only have a limited number of physical ports into which cables may be plugged in to create links. Certain “terminal” nodes—often servers or end-user devices—may only have one or a handful of ports. Other nodes, such as switches, hubs, or routers, may have a great deal more ports, and typically are used to relay information between the terminal nodes. The arrangement of nodes and links in a network is said to be the topology of the network, and is typically visualized as a network graph or tree.
A given node in the network may communicate with another node in the network by sending data units along one or more different “paths” through the network that lead to the other node, each path including any number of intermediate nodes or “hops.” The node may identify these paths in a variety of manners. For instance, the paths may be specified to the node in advance, and/or the node may identify the paths by analyzing a topological map, such as the node may build over time through observations of certain types of packets from other nodes in the network.
Each path is mapped to one or more destination nodes. For instance, a path may be mapped to a grouping of nodes known as a subnet, wherein all nodes in the grouping share a certain address prefix. Or a path may be mapped to individual destination nodes. Each path is further associated with an outbound port of the node, through which packets routed through the path are sent out. Hence, a path may be viewed in one sense as a mapping of one or more destination nodes to a specific outbound port of a node.
In complex networks, there may be any number of different paths between two nodes. Some of these paths may include different nodes, while other paths may include the same nodes but involve at least some different ports and/or communication links between those nodes. In some systems, a node may also consider certain internal components within the node to be part of a path (e.g. a specific component intended to post-process a packet, take traffic control actions with respect to a packet, or mark a packet with a special label or flag). The existence of multiple paths between two nodes may necessitate techniques for a node to select which path to send a packet through in order to reach the other node.